home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / ecstr3.arc / MEMSET.C < prev    next >
C/C++ Source or Header  |  1987-03-04  |  980b  |  43 lines

  1. /*  File   : memset.c
  2.     Author : Richard A. O'Keefe.
  3.     Updated: 25 May 1984
  4.     Defines: memset()
  5.  
  6.     memset(dst, chr, len)
  7.     fills the memory area dst[0..len-1] with len bytes all equal to chr.
  8.     The result is dst.  See also bfill(), which has no return value and
  9.     puts the last two arguments the other way around.
  10.  
  11.     Note: the VAX assembly code version can only handle 0 <= len < 2^16.
  12.     It is presented for your interest and amusement.
  13. */
  14.  
  15. #include "strings.h"
  16.  
  17. #if    VaxAsm
  18.  
  19. char *memset(dst, chr, len)
  20.     char *dst;
  21.     int chr;                   /* should be char */
  22.     int len;
  23.     {
  24.        asm("movc5 $0,*4(ap),8(ap),12(ap),*4(ap)");
  25.      return dst;
  26.     }
  27.  
  28. #else  ~VaxAsm
  29.  
  30. char *memset(dst, chr, len)
  31.     char *dst;
  32.     register int chr;          /* should be char */
  33.     register int len;
  34.     {
  35.        register char *d;
  36.  
  37.        for (d = dst; --len >= 0; *d++ = chr) ;
  38.        return dst;
  39.     }
  40.  
  41. #endif VaxAsm
  42.  
  43.